<template>
  <header class="header">
    <h1>todos</h1>
    <!-- 4.0全选功能 需要父传子-->
    <input id="toggle-all" class="toggle-all" type="checkbox" v-model="isAll" />
    <label for="toggle-all"></label>
    <!-- 2.0给数组添加数据，用到子传父-->
    <!-- 2.1给输入框绑定键盘按下事件,v-model双向绑定数据-->
    <input
      class="new-todo"
      placeholder="输入任务名称-回车确认"
      autofocus
      v-model="task"
      @keyup.enter="upFn"
    />
  </header>
</template>

<script>
export default {
  props: ["arr"],
  data() {
    return {
      task: "",
    };
  },
  methods: {
    upFn() {
      // 2.7需要进行非空判断
      if (this.task.trim() === "") return alert("您输入的内容不合法哦");
      // 2.2 在子组件内通过this.$emit给父组件传输入的值，绑定父组件自定义事件名
      this.$emit("add", this.task);
      //   2.6需要把数据清空
      this.task = "";
    },
  },
  computed: {
    isAll: {
      set(checked) {
        // 4.2 把全选为true的状态赋值给全选框
        this.arr.forEach((item) => (item.isDone = checked));
      },
      // 4.1小选影响全选，item.isDone === true的状态下，就是全选，这时全选的状态为true
      get() {
        return this.arr.every((item) => item.isDone === true);
      },
    },
  },
};
</script>